home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
language
/
embedded
/
m68k
/
tutor.arc
/
MS.SA
< prev
next >
Wrap
Text File
|
1990-01-05
|
3KB
|
101 lines
MS IDNT 1,0 Memory set command 11/02/81
XDEF MSCMD
XDEF MSG017
XDEF SETME
SPC 1
XREF CKADDR
XREF FIXBUF
XREF FIXDCRLF
XREF FNEXTF
XREF GETA
XREF GETNUMA
XREF MACSBUG
XREF MSG
XREF OUTPUT
XREF PNT8HX
XREF PORTIN1
XREF SYNTAX
CR EQU $D
LF EQU $A
EOT EQU 4
PAGE
SECTION 11
* ***MS*** MEMORY SET
* FORMAT: MS ADDRESS HEX HEX,HEX,'ASCII' ETC.
* COMMAS OR SPACES BETWEEN FIELDS
* FIELDS ARE SIZE ADJUSTED (STORES UP TO 4 BYTES)
* ASCII ENCLOSED IN SINGLE QUOTES-ANY LENGTH
*
MSCMD LEA SYNTAX(PC),A0 IF NO PARAMETERS
BSR FNEXTF FIND NEXT FIELD
BSR GETA GET ADDRESS
BSR CKADDR CHECK VALID ADDRESS
SPC 1
MOVE.L D0,A1 A1=START (OPEN) ADDRESS
SETM1 LEA MACSBUG(PC),A0 IF NO PARAMTER
BSR FNEXTF FIND NEXT FIELD
MOVE.L A5,A4 SAVE ADDRESS OF PARAMTER
MOVE.B (A5),D0 CHECK OUT NEXT CHARACTER
CMP.B #$27,D0 SEE IF IT IS QUOTE MARK
BEQ.S SETM5 SPECIAL ROUTINE
CMP.B #'N',D0 SEE IF NEXT LINE FEATURE
BEQ.S SETM7
BSR GETNUMA GET THE DATA
MOVE.L A1,A3 ADDRESS
MOVE.L A5,D1 COMPUTE BYTES OF DATA
SUB.L A4,D1 LEN=END-START
ASR.L #1,D1 BYTES=CHAR/2
BCC.S SETM3 TAKE CARE OF ODD CHARACTER
ADD.L #1,D1 WHOLE NUMBER OF BYTES
SETM3 MOVE.L D1,D2 D1 SCANS DOWN
SUB.L #1,D2 KNOCK IT DOWN TO INDEX
MOVE.B D0,0(A3,D2) INDEXED BECAUSE BACKWARD
SPC 1
MOVE.B 0(A3,D2),D3 REREAD TO CHECK IF STORED OK
SPC 1
CMP.B D0,D3 ARE SAME?
BNE.S SETME 'DATA DID NOT STORE'
SPC 1
ASR.L #8,D0 SHIFT ONE BYTE
ADD.L #1,A1 BUMP ADDRESS
SUB.L #1,D1
BNE SETM3
BRA.S SETM1 GO DO NEXT DATA
SPC 1
* DATA IN IN ASCII STRING
SETM5 ADD.L #1,A5 GET PAST QUOTE MARK
SETM6 CMP.L A6,A5 SEE IF END OF BUFFER
BGE MACSBUG
MOVE.B (A5)+,D0 GRAB CHARACTER
CMP.B #$27,D0 SEE IF QUOTE MARK
BEQ.S SETM1 IF SO-END OF STRING
MOVE.B D0,(A1) SAVE DATA
SPC 1
MOVE.B (A1)+,D1 REREAD FOR CHECK
SPC 1
CMP.B D1,D0 SEE IF SAME
BEQ SETM6
SETME LEA MSG017(PC),A5 'DATA DID NOT STORE'
BSR FIXDCRLF
BRA MSG
SPC 1
SETM7 BSR FIXBUF DISPLAY CURRENT ADDRESS
MOVE.L A1,D0
BSR PNT8HX PUT ADDRESS IN BUFFER
MOVE.L #' ? ',(A6)+ PROMPT
BSR OUTPUT DUMP BUFFER WITH NO LF CR
BSR FIXBUF GET READY FOR INPUT
MOVE.B #' ',(A5)+ ADVANCE IN BUFFER
MOVE.L A5,A6 BECAUSE OF SNAFU IN FINDNP
BSR PORTIN1 INPUT FROM CONSOLE
MOVE.B -(A5),D0 JUST BACK UP IN BUFFER
CMP.L A6,A5
BEQ MACSBUG
BRA SETM1 DO DECODE IT
SPC 1
MSG017 DC.B 'DATA DID NOT STORE',CR,LF,EOT
END